#include<bits/stdc++.h>
#define int long long
using namespace std;
int tr[4005][4005],n,a[4005][4005];
int suan(int p){return p&(-p);}
void add(int p,int op,int k){for(int i=p;i<=n;i+=suan(i))tr[op][i]+=k;}
int cha(int p,int op){int ans=0;for(int i=p;i;i-=suan(i)) ans+=tr[op][i];return ans;}
int Mod(int x){return x%999999999;}
signed main(){
	freopen("fire.in","r",stdin);
	freopen("fire.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int q;cin>>n>>q;
	while(q--){
		int op;cin>>op;
		if(op==1){
			int op1,i,num,w;
			cin>>op1>>i>>num>>w;
			if(op1==0){
				if(num==1){
					for(int j=1;j<=n;j++){
						add(j,i,(a[i][j]&w)-a[i][j]);
						a[i][j]=(a[i][j]&w);
					}
				}
				if(num==2){
					for(int j=1;j<=n;j++){
						add(j,i,(a[i][j]|w)-a[i][j]);
						a[i][j]=(a[i][j]|w);
					}	
				}
				if(num==3){
					for(int j=1;j<=n;j++){
						add(j,i,(a[i][j]^w)-a[i][j]);
						a[i][j]=(a[i][j]^w);
					}
				}
				if(num==4){
					for(int j=1;j<=n;j++){
						add(j,i,Mod(a[i][j]+w)-a[i][j]);
						a[i][j]=Mod(a[i][j]+w);
					}
				}
			}
			else{
				if(num==1){
					for(int j=1;j<=n;j++){
						add(i,j,(a[j][i]&w)-a[j][i]);
						a[j][i]=(a[j][i]&w);
					}
				}
				if(num==2){
					for(int j=1;j<=n;j++){
						add(i,j,(a[j][i]|w)-a[j][i]);
						a[j][i]=(a[j][i]|w);
					}	
				}
				if(num==3){
					for(int j=1;j<=n;j++){
						add(i,j,(a[j][i]^w)-a[j][i]);
						a[j][i]=(a[j][i]^w);
					}
				}
				if(num==4){
					for(int j=1;j<=n;j++){
						add(i,j,Mod(a[j][i]+w)-a[j][i]);
						a[j][i]=Mod(a[j][i]+w);
					}
				}
			}
		}
		else{
			int ans=0,p,q;cin>>p>>q;
			for(int i=1;i<=p;i++){
				ans+=cha(q,i);
			}
			cout<<ans<<'\n';
		}
	}
	return 0;
}
